#include "comm.h"
#include<unistd.h>
int main()
{
  //ftok创建key值(自定义路径名，自定义id)
  key_t key=ftok(PATH_NAME,PROJ_ID);
  if(key<0){
    perror("ftok");
    return 1;
  }
  //创建共享内存
  //key唯一标识符：本质让不同进程看到同一份资源
  //单独使用IPC_CREAT 创建一个共享内存如果存在返回当前存在的共享内存
  //IPC_CREAT|IOC_EXCL:不存在就创建，已近存在就返回出错 （保证共享内存是最新的）
  int shmid=shmget(key,SIZE,IPC_CREAT|IPC_EXCL|0666);
  if(shmid<0){
    perror("shmid");
    return 2;
  }
  
  printf("key:%u,shmid:%d\n",key,shmid); 
   
  char *men=(char*)shmat(shmid,NULL,0);
  printf("attaches shm success!\n");


  //通信开始
  //共享内存一旦建立好并映射自己进程的地址空间
  //该进程就可以直接看到共享内存，不需要调用系统接口
  while(1){
    sleep(1);
    printf("%s\n",men);
  }


  //去关联
  shmdt(men);
  printf("detaches shm success!\n");

  shmctl(shmid,IPC_RMID,NULL);
  printf("key:0x%x,shmid:%d->shm delete success\n",key,shmid);

  return 0;
}
